package com.candy.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter("/*")
public class EncodingFilter implements Filter {
    /**
     * 该方法在过滤器生命周期结束前由Web容器调用，可用于使用资源的释放
     */
    public void destroy() {
    }

    /**过滤器的功能实现方法。当用户请求经过时，容器调用此方法对请求和响应进行功能处理。
     * 该方法由容器传入三个参数对象，分别用于获取请求对象、响应对象和FilterChain对象，
     * 请求和响应对象类型分别为ServletRequest和ServletResponse，并不依赖于具体的协议，
     * FilterChian对象的doFilter(request,response)方法负责将请求传递给下一个过滤器或目标资源
     -     * @param req
     * @param resp
     * @param chain
     * @throws ServletException
     * @throws IOException
     */
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        chain.doFilter(req, resp);
    }

    /**
     * 过滤器初始化方法。容器在过滤器实例化后调用此方法对过滤器进行初始化，
     * 同时向其传递FilterConfig对象，用于获得和Servlet相关的ServletContext对象
     * @param config
     * @throws ServletException
     */
    public void init(FilterConfig config) throws ServletException {

    }

}
